Increasing advances in computer technology (e.g., microprocessor speed, memory capacity, data transfer bandwidth, software functionality, and the like) have generally contributed to enhanced computer application in various industries. Accordingly, requirements to store vast amounts of data in many computer systems, as well as the ever-growing demand to access the data, has pushed system developers to seek ways of providing fast, multiple-user access to the data.
Array of disks are commonly employed for computer-based data storage. One category of disk arrays is referred to as Redundant Array of Inexpensive/Independent Drives (RAID). Within a RAID system, varying levels of data storage redundancy are utilized to enable reconstruction of stored data in the event of data corruption or disk failure. These various types of redundant storage strategies are referred to as RAID levels.
In general, hardware RAID solutions use on-disk RAID formats (e.g., data structures configured to any one of a plurality of RAID specifications) for data access (e.g., read, write, . . . ) on disks used in RAID configurations. If a disk used in RAID configuration is removed from the RAID array, and placed into another machine without employing an adapter, then such disk is typically not recognized because of the custom formats in use. As such, the Operating System (OS) can typically write new data to such disks, and accidentally destroy vital data. Alternatively, even though data may be “recognized” due to the correct partition table and boot sector, nonetheless the remainder of the disk may not be correctly identified due to the data being spread across multiple disks, such as the use of Striping, (e.g., RAID 0.)
Typically, RAID 0 (“striping”) places data across multiple disks without redundancy. A common implementation is to simply alternate 64k sections between two disks. For example, disk “0” can have the boot sector and signature for the volume (e.g., stripe logical sectors 0-127 exist at sectors 0-127 on the disk, and stripe logical sectors 256-383 exist at sectors 128-255, and the like), while disk “1” would contain stripe logical sectors 128-255 on its sectors 0-127, and stripe logical sectors 383-511 on its sectors 128-255, and the like. When Disk 0 of such stripe is inserted into a machine without using the hardware RAID adapter, since the first 64k of data is correct, the machine can identify the boot sector (sector 0) and the associated information. The machine can then attempt to boot and fail. On the other hand, if installed as the non-boot partition, the OS can identify a partition table and employ it to describe the disk. Yet, such process can corrupt the file system data, as some file systems are not designated as read-only during the mounting phase. In addition, user confusion can result from receiving an error message, in a form of the display of a “corrupt” file system, for example.
Likewise, when Disk “1” of such stripe is inserted into a machine without using the hardware RAID adapter, the machine identifies the disk as “un-initialized”. Accordingly, Windows can write a “signature” into the boot sector (sector 0) of each disk for a unique identification. Since this sector is actually sector 128 of the stripe set, such signature writing can potentially destroy vital data on the disk. In addition, typically the user may not be aware that the disk in question is part of a stripe set, or that the disk may in fact contain useful information, thus subjecting it to potential loss of data.
Similar problematic scenarios can occur for other RAID types (e.g., RAID 5), wherein non-unique IDs can cause other problems, and when using mirroring (e.g., RAID 1). Moreover, when drives are removed from existing systems due to configuration changes, accidental data destruction can occur if the drives are connected to the wrong type of controller.
Therefore, there is a need to overcome the aforementioned exemplary deficiencies associated with conventional systems and devices.